The ability to debug software programs is critical to software development. Debugging often involves monitoring variables and/or resources used in a software program. One conventional method of monitoring involves inserting print statements within the program's code. Monitoring may also be performed during specific times of the program's execution. For example, breakpoints are often used to pause or terminate program execution, allowing the developer to view the status of the variables/resources at the specified times.
The conventional debugging methods described above are limited in that because changes to the program code are required, the program must be recompiled and re-executed in order to view the results of the changes. Thus, the conventional debugging methods cannot be applied to programs that are currently being executed without interrupting the operation of the programs.
In addition, the conventional debugging methods are not suited for software development projects involving collaboration amongst multiple developers. Testing and code modification performed by one developer is not seen by the other developers, potentially resulting in project delays and redundant work. Therefore, a need exists for a system and method of software development that allows developers to create software dynamically in a collaborative environment.